/***********************************************************************
 * @package：，@class-name：ProxyUtil.java
 * @creator Administrator
 * @create-time 2016年3月2日 上午11:11:18
 * @revision $Id: 1.0
 ***********************************************************************/
package cn.wj.base.util;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class ProxyUtil{
	public static <T>T getProx(final T targt,final Advice advice){
		 Object proxy= Proxy.newProxyInstance(targt.getClass().getClassLoader(),
				targt.getClass().getInterfaces(),
				new InvocationHandler() {
					public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
						Object result=null;
						try {
							advice.setMethod(method);
							advice.start();
							result = method.invoke(targt, args);
							advice.end();
						} catch (Exception e) {
							e.printStackTrace();
							advice.error();
						}finally {
							advice.must();
						}
						return result;
					}
				});
		 return (T) proxy;
	}
}
